package com.kdgz.kdgz.sevice;

import com.kdgz.kdgz.beans.Staff;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Desc 员工服务
 * @date 2021/3/17
 */
public interface StaffService {
    /**
     * 登录
     * @param staff 包含用户名和密码
     * @return 返回空代表用户名或密码不正确
     */
    public Staff login(Staff staff);

    /**
     * 注册
     * @param staff 包含用户名和密码
     * @return 返回1注册成功，返回-1注册失败
     */
    public Integer register(Staff staff);

    /**
     * 遍历所有员工对象
     * @return java.util.List<com.kdgz.kdgz.beans.Staff>
     */
    public List<Staff> list();

    /**
     * 获得员工总数
     * @return java.lang.Integer
     */
    public Integer getStaffCount();

    /**
     * 查询某个状态下员工数量
     * @param status 员工状态
     * @return java.lang.Integer
     */
    public Integer getStatusCount(Integer status);

    /**
     * 修改员工信息
     * @param staff 更新的员工信息
     * @return 0：修改失败
     */
    public Integer updateStaff(Staff staff);

    /**
     * 开除员工
     * @param id 开除的员工id
     * @return 0:开除失败
     */
    public Integer deleteStaff(Integer id);

    /**
     * 获得员工所有薪资
     * @return java.math.BigDecimal
     */
    public BigDecimal getTotalSalary();

    /**
     * 通过sid查询某个员工
     * @param  sid 员工id
     * @return com.kdgz.kdgz.beans.Staff
     */
    public Staff getStaffBySid(Integer sid);

    /**
     * 查询指定区域的快递员
     * @param aid 区域id
     * @return com.kdgz.kdgz.beans.Staff
     */
    public List<Staff> getStaffByAid(Integer aid);

    /**
     * 获得所有快递人员
     * @return java.util.List<com.kdgz.kdgz.beans.Staff>
     */
    public List<Staff> getOrderStaff();

    /**
     * 获得所有内勤人员
     * @return java.util.List<com.kdgz.kdgz.beans.Staff>
     */
    public List<Staff> getBackOfficeStaff();

    /**
     * 获得所有财务人员
     * @return java.util.List<com.kdgz.kdgz.beans.Staff>
     */
    public List<Staff> getFinanceStaff();
}
